#include "switch_drv.h"
#define LOG_TAG          "SWITCH_DRV" 
#include "elog.h"

TaskHandle_t            freemodbus_poll_task_handler;

/**
 * @desc  : FreeModbus poll任务处理函数
 * @date  : 2025-11-11
 * @author: AnRui
 * @param : p - {参数说明}:
 * @note  :
 */
void drv_freemodbus_poll_task_entry(void* p)
{
    while (1) {
        eMBMasterPoll();
    }

}

/**
 * @desc  : 开关设备初始化
 * @date  : 2025-11-05
 * @author: AnRui
 * @note  :
 */
bool switch_drv_init(void)
{
    //初始化MODBUS rtu模式 端口号(无用) 9600波特率 无检验位
    eMBErrorCode modbus_err = eMBMasterInit(MB_RTU, 0, DRV_FREEMODBUS_BAUDRATE, MB_PAR_NONE);
    eMBMasterEnable();
    // 创建 Modbus 轮询任务
    if (xTaskCreate(drv_freemodbus_poll_task_entry,
        "drv_freemodbus_poll_task",
        DRV_FREEMODBUS_TASK_STACK_SIZE,
        NULL,
        DRV_FREEMODBUS_TASK_PRIORITY,
        &freemodbus_poll_task_handler) != pdTRUE) {
        log_e("create freemodbust task failed");
        return false;
    }
    return true;
}

/**
 * @desc  : 打开风扇
 * @date  : 2025-11-11
 * @author: AnRui
 * @return: true
 * @return: false
 * @note  :
 */
bool switch_fan_open(void)
{
    if (eMBMasterReqWriteCoil(0x01, 0x01, 0xff00, 100) != MB_MRE_NO_ERR) return false;
    return true;
}

/**
 * @desc  : 关闭风扇
 * @date  : 2025-11-11
 * @author: AnRui
 * @return: true
 * @return: false
 * @note  :
 */
bool switch_fan_close(void)
{
    if (eMBMasterReqWriteCoil(0x01, 0x01, 0x0000, 100) != MB_MRE_NO_ERR) return false;
    return true;
}
/**
 * @desc  : 开灯
 * @date  : 2025-11-11
 * @author: AnRui
 * @return: true
 * @return: false
 * @note  :
 */
bool switch_light_open(void)
{
    if (eMBMasterReqWriteCoil(0x01, 0x00, 0xff00, 100) != MB_MRE_NO_ERR) return false;
    return true;
}
/**
 * @desc  : 关灯
 * @date  : 2025-11-11
 * @author: AnRui
 * @return: true
 * @return: false
 * @note  :
 */
bool switch_light_close(void)
{
    if (eMBMasterReqWriteCoil(0x01, 0x00, 0x0000, 100) != MB_MRE_NO_ERR) return false;
    return true;
}



